/**
 *
 * 处理两处数据，
 * 第一处是点击新增按钮，填写完唯一性验证信息后返回的数据
 * 第二处是点击修改，返回的页面数据内容
 *
 * */

import renderRowOperator from "./renderRowOperator";
import { HI_PSNJOB_H_DEFS } from "../../request-functions/constant";
const ignoreList = [
    "formrelation",
    "code",
    "gridrelation",
    "ncc600704list",
    "validateFlag",
];

const formList = ["bd_psndoc", "hi_psnorg_h", "hi_psnjob_h"];

// res是获取修改页面数据的返回结果
export default function (cb) {
    const { modifyData: res } = this.state;

    let meta = this.props.meta.getMeta();
    let allArea = res.data.allArea;
    let photoRequired = false;

    // 解决gridrelation报错的问题
    Object.keys(allArea).forEach((key) => {
        if (ignoreList.indexOf(key) < 0) {
            meta[key] = allArea[key];
            meta["gridrelation"][key] = {
                destBrowseAreaCode: null,
                destEditAreaCode: null,
                srcAreaCode: key,
                tabRelation: [key],
            };
        }
    });

    // 给子表每一行添加操作按钮
    let template = renderRowOperator.call(this, meta, res.data.areaCodeList);

    // 人员类别为实习生时，需要显示实习指导老师等字段
    let pk_psncl = res.data.Pk_psncl;
    if (pk_psncl == "1001A110000000000V3Q") {
        template["hi_psnjob_h"].items.forEach((item) => {
            if (
                item.attrcode == HI_PSNJOB_H_DEFS.SXSZDLS ||
                item.attrcode == HI_PSNJOB_H_DEFS.SXSBXFJE ||
                item.attrcode == HI_PSNJOB_H_DEFS.SXSJT
            ) {
                item.visible = true;
                item.required = true;
            }
        });
    } else {
        template["hi_psnjob_h"].items.forEach((item) => {
            if (
                item.attrcode == HI_PSNJOB_H_DEFS.SXSZDLS ||
                item.attrcode == HI_PSNJOB_H_DEFS.SXSBXFJE ||
                item.attrcode == HI_PSNJOB_H_DEFS.SXSJT
            ) {
                item.visible = false;
                item.required = false;
            }
        });
    }

    // 隐藏照片
    template["bd_psndoc"].items.forEach((item) => {
        if (item.attrcode === "photo") {
            item.visible = false;
            photoRequired = item.required;
        }
    });
    /**
     * 这里这么做的目的
     * 首先说原因，因为form里的某些参照的查询条件是动态的
     * 这就造成了查询条件查回来的时候，参照拿着默认的queryCondition去请求了
     * 于是在这里设定了queryCondition为一个对象，利用了对象存储的是指针的原理
     * 当请求回来的时候利用这个指针修改queryCondition数据，
     * 这样就会让参照拿到的是动态的请求条件
     */
    formList.map((formKey) => {
        template[formKey].items.forEach((item) => {
            item["queryCondition"] = item.queryCondition || {};

            if (item.itemtype === "datetimepicker") {
                item.disabled = false;
            }
        });
    });

    // 重新设置模版，并且将数据和照片存储到state里
    this.props.meta.setMeta(template, () => {
        this.setState(
            {
                addPageTemplate: res.data,
                imageData: res.data.image,
                photoRequired: photoRequired,
            },
            () => {
                cb && cb.call(this);
            }
        );
    });
}
